package com.stefanini.pe.bbva.bp.in.dao.impl;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
import org.springframework.stereotype.Repository;

import com.ibatis.sqlmap.client.SqlMapClient;
import com.stefanini.pe.bbva.bp.in.dao.iface.BitacoraDAOIface;
import com.stefanini.pe.bbva.bp.in.dao.iface.ClienteDAOIface;
import com.stefanini.pe.bbva.bp.in.dao.iface.PropuestaDAOIface;
import com.stefanini.pe.bbva.bp.in.to.Bitacora;
import com.stefanini.pe.bbva.bp.in.to.Cliente;
import com.stefanini.pe.bbva.bp.in.to.Propuesta;

@Repository
public class PropuestaDAOImpl extends SqlMapClientDaoSupport implements
		PropuestaDAOIface {
	
	@Autowired
	public PropuestaDAOImpl(SqlMapClient sqlMapClient) {
		setSqlMapClient(sqlMapClient);
	}

	@SuppressWarnings("unchecked")
	public HashMap consultarPortafolio(Propuesta propuesta) {	
		HashMap map = new HashMap();
		map.put("in_idsecrebalresumen", Integer.parseInt(propuesta.getIdSecreBalResumen()));		
		getSqlMapClientTemplate().queryForList("BP_Propuesta_SqlMap.cons_propuesta",map);
		
		return map;
	}
	
	@SuppressWarnings("unchecked")
	public HashMap consultarPortafolioNoCliente(Propuesta propuesta) {	
		HashMap map = new HashMap();
		map.put("in_idsecrebalresumen", Integer.parseInt(propuesta.getIdSecreBalResumen()));		
		getSqlMapClientTemplate().queryForList("BP_Propuesta_SqlMap.cons_propuestaNoCliente",map);
		
		return map;
	}
	
	@SuppressWarnings("unchecked")
	public List consultarDistribucion(Propuesta propuesta) {	
		HashMap map = new HashMap();
		map.put("in_codCliente", propuesta.getCodCliente());	
		map.put("in_idTabla", propuesta.getIdSecreBalResumen());
		getSqlMapClientTemplate().queryForList("BP_Propuesta_SqlMap.cons_distribucion",map);
		
		return (List)map.get("result");
	}
	
	public List consultarMonedaDistr(Propuesta propuesta){
		HashMap map = new HashMap();	
		map.put("in_idtabla", propuesta.getIdSecreBalResumen());
		getSqlMapClientTemplate().queryForList("BP_Propuesta_SqlMap.cons_moneda",map);
		
		return (List)map.get("result");
	}	
	
	public List listaCotizaClase(String tipoRenta){
		HashMap map = new HashMap();
		map.put("in_tiporenta", tipoRenta);
		getSqlMapClientTemplate().queryForList("BP_Propuesta_SqlMap.listarCotizaClase",map);		
		return (List)map.get("result");
	}
	
	public List listaCotizacion(String isin, String nemonico, String tipoRenta, String idCodClase){
		HashMap map = new HashMap();
		map.put("in_isin", isin);
		map.put("in_nemonico", nemonico);
		map.put("in_tiporenta", tipoRenta);
		map.put("in_idcodclase", idCodClase);       
         
		getSqlMapClientTemplate().queryForList("BP_Propuesta_SqlMap.listarCotizacion",map);		
		return (List)map.get("result");
	}
	
	public int inserRebalanceo(HashMap map){     
        try{
        	getSqlMapClientTemplate().queryForObject("BP_Propuesta_SqlMap.inserRebalanceo",map);
        	return 1;
        }catch(Exception e){
        	e.printStackTrace();
        	return -1;
        }
	}
	
	public Map<String,Object> listSimulacion(String idTemporal, String idResumen){
		HashMap map = new HashMap();
		map.put("in_idrentabilidadtemporal", idTemporal);
		map.put("in_idsecrebalresumen", idResumen);
         
		getSqlMapClientTemplate().queryForList("BP_Propuesta_SqlMap.listarSimulacion",map);		
		return map;
	}
	
	public List listReporteRebalanceo(HashMap map){     
         getSqlMapClientTemplate().queryForObject("BP_Propuesta_SqlMap.listarReporteRebal",map);        	
         return (List)map.get("result");        
	}
}
